/**
 *
 *
 */
#ifndef DATAFILTER_H
#define DATAFILTER_H

/**
 * @brief The Filter class 一个过滤策略类，不再这个区间内的为不正常的值，不能通过过滤
 */

#include <QList>

class Filter
{
public:
    Filter(int flag,int min = 10, int max = 20);
    int getFlag() const;
    int getMin() const;
    int getMax() const;

    void setMin(int min);
    void setMax(int max);
    /**
     * @brief filtering 对一个值进行过滤
     * 只是使用与在一段区间的值为正常
     *
     * @param vlaue 需要进行过滤的值
     * @return 真则过滤掉，假则不过滤
     */

    bool filtering(int vlaue) const;
private:
    /**
     * @brief m_flag 不同数据的过滤值
     */
    int m_flag;
    /**
     * @brief m_min 最小的值
     */
    int m_min;
    /**
     * @brief m_max 最大的值
     */
    int m_max;
};

/**
 * @brief The DataFilter class
 * 对相关的数据进行过滤的类，主要是找出不符合的数据
 * 数据没有向对应的过滤器则不过滤，
 *
 *
 */
class DataFilter
{
public:
    DataFilter();
    /**
     * @brief addAFilter 向过滤器中添加一个过滤策略
     * @param f 策略
     */
    void addAFilter(const Filter &f);
    /**
     * @brief filtering 过滤
     * @param vlaue 值
     * @return 真则过滤掉，假则不过滤
     */
    bool filtering(int flag,int vlaue) const;
private:
    /**
     * @brief m_list 存放策略的链表
     */
    QList<Filter> m_list;


};

#endif // DATAFILTER_H
